#pragma once

#include<pthread.h>

class Mutex
{
public:
  Mutex(pthread_mutex_t* mutex)
    :_mutex(mutex)
  {}

  void Lock()
  {
    pthread_mutex_lock(_mutex);
  }

  void UnLock()
  {
    pthread_mutex_unlock(_mutex);
  }

  ~Mutex()
  {}
private:
  pthread_mutex_t* _mutex;
};

class LockGuard
{
public:
  LockGuard(pthread_mutex_t* mutex)
    :_mutex(mutex)
  {
    _mutex.Lock();
  }

  ~LockGuard()
  {
    _mutex.UnLock();
  }
private:
  Mutex _mutex;
};


